package zzf.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

/*
* 测试RequestMapping的模糊匹配
* URL地址可以写模糊的统配符
* ? :能替代任意字符
* *:能替代任意多个字符,和一层路径
* **:能替代多层路径
* */
@Controller
public class RequestMappingTest {

    @RequestMapping("antTest01")
    public String antTest01(){

        System.out.println("antTest01");

        return "success";
    }

    /*
    * ?:匹配一个字符,0个多个都不行
    * antTest0后边可以随意带一个字符,都可以匹配到
    *   如果有多个请求匹配到了,那么精确匹配优先
    * */
    @RequestMapping("antTest0?")
    public String antTest02(){

        System.out.println("antTest02");

        return "success";
    }

    /*
     * *:能替代任意多个字符,和一层路径
     * antTest0后边可以带任意个字符,都可以匹配到,但是只能是一层路径,不能是多层路径
     *
     * */
    @RequestMapping("antTest0*")
    public String antTest03(){
        System.out.println("antTest03");
        return "success";
    }

    /*
     * **:匹配多层路径
     * antTest0/ 后边可以写多层路径,如果没有更精确匹配的话,都会匹配到当前方法上来
     * */
    @RequestMapping("antTest0/**")
    public String antTest04(){
        System.out.println("antTest04");
        return "success";
    }

    /*
    * pathVariable:路径上可以使用占位符
    *   可以在任意路径地方写一个{变量名}
    *   路径上的占位符,只能占一层路径
    *
    * * 这个测试失败,不知原因
    * */
    @RequestMapping("/user/{id}}")
    public String pathVariableTest(@PathVariable("id")String id){
        System.out.println("pathVariableTest");
        System.out.println("路径上的占位符的值:" + id);
        return "success";
    }
}
